Method and apparatus for controlling virtual switching

ABSTRACT

Provided is a method of controlling virtual switching, the method including: receiving at least one command from an external apparatus; determining whether the at least one command is performable by a network interface apparatus for controlling virtual switching; and based on a result of the determining, controlling the network interface apparatus or at least one operating system for driving an application to perform virtual switching.

CROSS-REFERENCE TO RELATED APPLICATIONS

This application claims the benefit of Korean Patent Application No.10-2013-0158677, filed on Dec. 18, 2013, in the Korean IntellectualProperty Office, the disclosure of which is incorporated herein in itsentirety by reference.

BACKGROUND

1. Field

One or more exemplary embodiments relate to a method of performingvirtual switching, and more particularly, to a method and apparatus forprocessing, using a server, a packet via virtual switching.

2. Description of the Related Art

Types of client apparatuses that are used are diversifying, and thenumber of electronic devices owned per person is increasing. Since usersuse various content by using various client apparatuses, a data amountthat needs to be processed by a server is increasing tremendously.

Thus, in order to process data required by many client apparatuses, thesize of a server is gradually increasing. In detail, a servervirtualization technology that installs several virtual machines eachincluding an operating system on one physical server and operates thephysical server as several servers has been developed.

Examples of a method of controlling, by using a plurality of virtualizedservers, data include a method of controlling data via software, such asa software-defined network method, and a method of controlling data bycontrolling a hardware apparatus, such as a single root input/output(IO) virtualization (SR-IOV) method.

Here, IO high speed technology that controls a hardware apparatus, suchas a network interface apparatus, has a high speed but lacks scalabilityand flexibility, and a service digital network (SDN) method thatcontrols a server via software has a low speed, and thus a method ofcontrolling, using a server, data, which has a high speed andflexibility, is required.

SUMMARY

One or more exemplary embodiments include a method and apparatus forprocessing, using a server, a packet via virtual switching.

Additional aspects will be set forth in part in the description whichfollows and, in part, will be apparent from the description, or may belearned by practice of the presented exemplary embodiments.

According to one or more exemplary embodiments, a method of controllingvirtual switching, the method includes: receiving at least one commandfrom an external apparatus; determining whether the at least one commandis performable by a network interface apparatus for controlling virtualswitching; and based on a result of the determining, controlling thenetwork interface apparatus or at least one operating system for drivingan application to perform virtual switching.

The at least one command received from the external device may include:a first command performable by the network interface apparatus; and asecond command performable by the at least one operating system.

The second command may be a command obtained by excluding the firstcommand from the at least one command received from the externalapparatus.

The controlling may include: controlling the network interface apparatusto perform virtual switching based on the first command; and controllingthe at least one operating system to perform virtual switching based onthe second command.

The determining may include converting a command performable by thenetwork interface apparatus to a command format compatible with thenetwork interface apparatus.

The determining may include analyzing a category of a commandperformable by the network interface apparatus, and the controlling mayinclude inputting the command to a table in the network interfaceapparatus, which corresponds to the category, based on a result of theanalyzing.

The at least one command may include a command related to at least oneof switching, tagging, untagging, editing, filtering, and rate limiting.

The controlling may include, if the at least one command does notinclude a command performable by the network interface apparatus,controlling the at least one operating system to perform virtualswitching.

The at least one operating system may include a software switch unit,the network interface apparatus may include a hardware switch unit, andthe controlling may include controlling the software switch unit and thehardware switch unit to perform virtual switching.

The determining may include: receiving capability information about thecapability of the network interface apparatus, from the networkinterface apparatus; and determining whether the at least one commandreceived from the external apparatus is performable by the networkinterface apparatus based on the capability information.

The receiving of the capability information may include: converting thecapability information to a format of a capability information matrix;and converting the at least one command received from the externalapparatus to a format of a capability vector, wherein the determiningbased on the capability information may include determining whether theat least one command received from the external apparatus is performableby the network interface apparatus based on the converted capabilityinformation and the converted at least one command.

The method may further include requesting the external apparatus for theat least one command, wherein the requesting may include not requestingthe external apparatus for the at least one command when the number oftimes the at least one command is requested is equal to or higher than acertain number of times.

The controlling may include: controlling the network interface apparatusto process a received packet based on the first command; controlling thenetwork interface apparatus to transmit the processed packet to the atleast one operating system; and controlling the at least one operatingsystem to process the processed packet based on the second command.

The controlling may include: controlling a hypervisor to transmit areceived packet to the at least one operating system; and controllingthe at least one operating system to process the received packet fromthe hypervisor based on the at least one command received from theexternal apparatus.

The controlling may include controlling the network interface apparatusand the at last one operating system to process a packet transmitted toa client apparatus based on the at least one command received from theexternal apparatus.

According to one or more exemplary embodiments, a computer-readablerecording medium has recorded thereon a program for executing the methodabove.

According to one or more exemplary embodiments, a server apparatusincludes: at least one operating system for driving an application; anetwork interface apparatus for performing virtual switching; and ahypervisor for controlling access to the at least one operating systemand the network interface apparatus, wherein the hypervisor determineswhether at least one command received from an external apparatus isperformable by the network interface apparatus and controls the networkinterface apparatus or the at least one operating system to performvirtual switching based on a result of the determination.

The at least one command received from the external apparatus mayinclude: a first command performable by the network interface apparatus;and a second command performable by the at least one operating system.

The second command may be a command obtained by excluding the firstcommand from the at least one command received from the externalapparatus.

The hypervisor may control the network interface apparatus to performvirtual switching based on the first command and control the at leastone operating system to perform virtual switching based on the secondcommand.

The hypervisor may include a command converter that converts a commandperformable by the network interface apparatus to a command formatcompatible with the network interface apparatus, based on a result ofthe determination.

The hypervisor may analyze a category of a command performable by thenetwork interface apparatus and input the command to a table in thenetwork interface apparatus, which corresponds to the category, based ona result of the analysis.

The at least one command may include a command related to at least oneof switching, tagging, untagging, editing, filtering, and rate limiting.

The hypervisor may control the at least one operating system to performvirtual switching when the at least one command does not include acommand performable by the network interface apparatus.

The at least one operating system may include a software switch unit,the network interface apparatus may include a hardware switch unit, andthe hypervisor may control the software switch unit and the hardwareswitch unit to perform virtual switching.

The hypervisor may include: a capability information obtainer thatreceives capability information about the capability of the networkinterface apparatus, from the network interface apparatus; and a commandanalyzer that determines whether the at least one command received fromthe external apparatus is performable by the network interfaceapparatus, based on the capability information.

The hypervisor may further include an information converter thatconverts the capability information to a format of a capabilityinformation matrix and the at least one command received from theexternal apparatus to a format of a capability vector, and the commandanalyzer may determine whether the at least one command received fromthe external apparatus is performable by the network interface apparatusbased on the converted capability information and the converted at leastone command.

The hypervisor may include a command requester that requests theexternal apparatus for the at least one command, wherein the commandrequester may not request the external apparatus for the at least onecommand when the number of times the at least one command is requestedis equal to or higher than a certain number of times.

The network interface apparatus may process a received packet based onthe first command and transmits the processed packet to the at least oneoperating system, and the at least one operating system may process thepacket processed by the network interface apparatus based on the secondcommand.

The hypervisor may transmit a received packet to the at least oneoperating system, and the at least one operating system may process thepacket received from the hypervisor based on the at least one commandreceived from the external apparatus.

The network interface apparatus and the at least one operating systemmay process a packet transmitted to a client apparatus based on the atleast one command received from the external apparatus.

According to one or more exemplary embodiments, a server apparatusincludes a network interface apparatus and a hypervisor to determinewhether a command received from an external apparatus is performable bythe network interface apparatus according to a capability of the networkinterface apparatus, wherein the hypervisor controls the networkinterface apparatus to process the command received from the externalapparatus based on a result of the determination.

According to one or more exemplary embodiments, a hypervisor isconfigured to be installed within a virtual server that includes anetwork interface apparatus. The hypervisor includes an informationobtainer to receive at least one command from an external apparatus, acapability information obtainer to obtain capability information aboutcapabilities of the network interface apparatus, a command analyzer toanalyze the at least one command received by the information obtainerand to determine whether a first command performable by the networkinterface apparatus is included in the at least one command based on thecapability information obtained by the capability information obtainerand a command converter to convert the first command performable by thenetwork interface apparatus, which is determined by the command analyzerfrom among the at least one command obtained by the informationobtainer, to a command format compatible with the network interfaceapparatus.

BRIEF DESCRIPTION OF THE DRAWINGS

These and/or other aspects will become apparent and more readilyappreciated from the following description of the exemplary embodiments,taken in conjunction with the accompanying drawings in which:

FIG. 1 is a diagram of a network according to an exemplary embodiment;

FIG. 2 is a diagram for describing a method of controlling a network,according to an exemplary embodiment;

FIG. 3 is a diagram for describing a virtual server according to anexemplary embodiment;

FIG. 4 is a flowchart of a method of controlling virtual switching,according to an exemplary embodiment;

FIG. 5 is a block diagram of a server apparatus according to anexemplary embodiment;

FIG. 6 is a flowchart of a method of processing a received packet,according to an exemplary embodiment;

FIG. 7 is a detailed flowchart of a method of performing virtualswitching, according to an exemplary embodiment;

FIG. 8 is a detailed flowchart of a method of processing a receivedpacket, according to another exemplary embodiment;

FIG. 9 is a detailed flowchart of a method of processing a packet beingtransmitted, according to an exemplary embodiment;

FIG. 10 is a detailed block diagram of a server apparatus that performsvirtual switching, according to an exemplary embodiment;

FIG. 11 is a diagram for describing capability information according toan exemplary embodiment;

FIG. 12 is a diagram for describing packet control information accordingto an exemplary embodiment;

FIG. 13 is a flowchart of a method of determining whether a command isperformable by a network interface apparatus, according to an exemplaryembodiment;

FIG. 14 is a flowchart of a method of setting a command to a networkinterface apparatus, according to an exemplary embodiment; and

FIG. 15 is a diagram for describing a flow of virtual switchingaccording to an exemplary embodiment.

DETAILED DESCRIPTION

Hereinafter, the terms used in the specification will now be defined inview of the embodiments, which will now be described in detail.

All terms including descriptive or technical terms which are used hereinshould be construed as having meanings that are apparent to one ofordinary skill in the art. However, the terms may have differentmeanings according to an intention of one of ordinary skill in the art,precedent cases, or the appearance of new technologies. Also, some termsmay be arbitrarily selected by the applicant, and in this case, themeaning of the selected terms will be described in detail here in thedetailed description. Thus, the terms used herein have to be definedbased on the meaning of the terms together with the descriptionthroughout the specification.

Also, when a part “includes” or “comprises” an element, unless there isa particular description contrary thereto, the part can further includeother elements, not excluding the other elements. In the followingdescription, terms such as “unit” and “module” indicate a unit forprocessing at least one function or operation, wherein the unit and theblock may be embodied as hardware or software or embodied by acombination of hardware and software.

As used herein, the term “and/or” includes any and all combinations ofone or more of the associated listed items.

Throughout the specification, at least one command received from anexternal apparatus may denote a command related to virtual switching. Inother words, at least one command received by a server apparatus from anexternal apparatus may be included in packet control information, asinformation in which commands or rules, or both, required to process apacket are defined. Also, at least one command received by an externalapparatus may include at least one command performable by a networkinterface apparatus and/or at least one operating system.

Also, in the present specification, when a component or a unit processesor performs a certain operation, a server apparatus may control thecomponent or the unit to process or perform the certain operation.

Reference will now be made in detail to embodiments, examples of whichare illustrated in the accompanying drawings. In this regard, thepresent embodiments may have different forms and should not be construedas being limited to the descriptions set forth herein. Descriptionsabout drawings that are not related to the one or more embodiments areomitted, and like reference numerals denote like elements.

FIG. 1 is a diagram of a network according to an exemplary embodiment.

As shown in FIG. 1, the network according to an exemplary embodiment mayinclude a first server apparatus 101 and a plurality of clientapparatuses, such as a first client apparatus 103 and a second clientapparatus 105. The first client apparatus 103 and the second clientapparatus 105 may be of the same type or of different types.

According to an exemplary embodiment, the first server apparatus 101 maybe a virtual server. Alternatively, according to an exemplaryembodiment, the first server apparatus 101 may be a physical serverapparatus or a group of a plurality of server apparatuses, such as datacenters.

The first and second client apparatuses 103 and 105 may be any one ofvarious devices. For example, the first and second client apparatuses103 and 105 may each be a desktop computer, a mobile phone, a smartphone, a laptop computer, a tablet personal computer (PC), an electronicbook terminal, a digital broadcasting terminal, a personal digitalassistant (PDA), a portable multimedia player (PMP), a navigation, anMP3 player, a digital camera, an internet protocol television (IPTV), adigital television (DTV), or a consumer electronics (CE) device (such asa refrigerator or air conditioner having a display device), but are notlimited thereto, and may each be any device capable of communicatingwith a server.

According to an exemplary embodiment, the first server apparatus 101 andthe first and second client apparatuses 103 and 105 may form a wirelessnetwork or a wired network. Types of network connection may include3^(rd)-generation (3G), 4G, LTE, and Wi-Fi, and a connection form is notlimited thereto.

According to an exemplary embodiment, the first and second clientapparatuses 103 and 105 may transmit or receive various types of data toor from the first server apparatus 101. For example, the first andsecond client apparatuses 103 and 105 may transmit or receive contentstreaming data, rendering data, control data, and authentication data,while a type of data is not limited thereto.

According to an exemplary embodiment, the first server apparatus 101 maytransmit or receive data to or from the first and second clientapparatuses 103 and 105. In other words, according to an exemplaryembodiment, the first server apparatus 101 may transmit or receivevarious types of data to or from the first and second client apparatuses103 and 105 in a packet form.

FIG. 2 is a diagram for describing a method of controlling a network,according to an exemplary embodiment.

Recently, a virtual server obtained by virtualizing the first serverapparatus 101 has been used to satisfy data processing requirements ofclient apparatuses. In detail, the virtual server may include at leastone operating system (OS). Each OS may be used to operate one virtualmachine, and one OS and one virtual machine may operate as one virtualserver.

In a general server, a control capability of a switch unit thatprocesses a packet is not separated from hardware in the general server.However, as a number of virtual servers increases, the number of switchunits to be controlled by a user rapidly increases, and thus it becomesdifficult for the user managing the general server to control thevirtual servers one-by-one.

Accordingly, in order to manage a plurality of the virtual servers, theuser uses a centralized management method by gathering, as oneapparatus, control units for controlling the switch units that processpackets in the virtual servers. Such a technology is referred to as asoftware-defined network (SDN) technology. Since the SDN technology iswell known to one of ordinary skill in the art, details thereof are notprovided here.

Referring to FIG. 2, according to an exemplary embodiment, the firstserver apparatus 101 and a second server apparatus 207 connecting thenetwork control apparatus 201 and the first and second serverapparatuses 101 and 207 may include hardware for performing a packetprocess, such as packet forwarding. The network control apparatus 201may control the switch 203 via an interface.

According to an exemplary embodiment, the network control apparatus 201may provide an application programming interface (API), and a user maycontrol a network OS by using the API provided by the network controlapparatus 201 via an application.

According to an exemplary embodiment, the network control apparatus 201may include an SDN controller.

Also, according to an exemplary embodiment, the network controlapparatus 201 may control the switch 203 via an interface, such as anopenflow interface. Since the openflow interface is well known to one ofordinary skill in the art, details thereof are not provided here.

FIG. 3 is a diagram for describing a virtual server 301 according to anexemplary embodiment.

Referring to FIG. 3, the virtual server 301 may be the first serverapparatus 101 of FIG. 1 or 2. Also, the virtual server 301 of FIG. 3 maybe a server apparatus described hereinafter.

According to an exemplary embodiment, the virtual server 301 may includeat least one virtual machine 303. The virtual machine corresponds to atleast one OS, wherein at least one OS may each operate as one virtualmachine 303. Also, according to an exemplary embodiment, the OS maydrive an application.

According to an exemplary embodiment, the virtual machine 303 maycontrol a network interface apparatus 307 via a virtual-function (VF)driver. In other words, the virtual machine 303 may use capabilities ofthe network interface apparatus 307 via the VF driver. According to anexemplary embodiment, the capabilities of the network interfaceapparatus 307 usable by the virtual machine 303 may include directmemory access (DMA), but are not limited thereto.

According to an exemplary embodiment, examples of the at least one OSincluded in the virtual server 303 may include a window OS, a Linux OS,a MAC OS, and a Unix OS, but are not limited thereto.

Also, according to an exemplary embodiment, the at least one OS mayinclude a software switch unit. According to an exemplary embodiment,the software switch unit may be a component that performs virtualswitching via software.

According to an exemplary embodiment, the virtual server 301 may includea hypervisor 305.

According to an exemplary embodiment, the hypervisor 305 is a componentthat manages the OS corresponding to the virtual machine 303 such thatthe OS may use the network interface apparatus 307, and may denote alogical platform that controls access of the at least one OS to thenetwork interface apparatus 307.

According to an exemplary embodiment, the hypervisor 305 may control thenetwork interface apparatus 307 via a physical-function (PF) driver. Thehypervisor 305 is a privileged layer that is capable of using allcapabilities of the network interface apparatus 307. In other words, thehypervisor 305 may be a component that operates as a managing unit ofthe virtual server 301.

According to an exemplary embodiment, the hypervisor 305 may include avirtual machine monitor, but is not limited thereto.

According to an exemplary embodiment, the virtual server 301 may includethe network interface apparatus 307. The network interface apparatus 307is hardware that forms a server, and may include, for example, at leastone central processing unit (CPU), a hard disk, a storage device such asa memory, and a network interface card, or may only include a networkinterface card. According to an exemplary embodiment, the networkinterface apparatus 307 may include a hardware switch unit.

According to an exemplary embodiment, the virtual server 301 may be oneserver physically, but one or more servers logically. In other words,the virtual server 301 may be recognized to be a plurality of servers ora single server by a client apparatus based on settings of a user.

According to an exemplary embodiment, the hypervisor 305 may receive atleast one command from the network control apparatus 201 of FIG. 2. Theat least one command may be included in packet control information.

According to an exemplary embodiment, the at least one command mayinclude a command related to virtual switching and may include a commandbelonging to various categories related to virtual switching, such asswitching, tagging, untagging, editing, filtering, and rate limiting.

According to an exemplary embodiment, switching may be a capability oftransmitting a packet to a destination, such as a virtual machine, bychecking a certain field of a received packet, and tagging may be acapability of adding a header to a certain location in a packet.Untagging may be a capability of removing a header of a certain locationin a packet, editing may be a capability of editing a value of a certainfield in a packet, and filtering may be a capability of determiningwhether to discard a packet by checking a certain field of the packet.Rate limiting may be a capability blocking the number of packetsreceived per second does not exceed a certain rate.

For example, packet control information may include a command fortransmitting a packet to a virtual machine having a certain destinationaddress if a header of the packet is the certain destination address,and a command for inserting an additional header to a certain locationof a packet.

Generally, it is difficult to simultaneously use a virtualswitching-related capability provided by the hypervisor 305 or at leastone OS in the virtual server 301, and a virtual switching-relatedcapability provided by the network interface apparatus 307.

In other words, it may be difficult for the network interface apparatus307 to perform a command related to virtual switching in any one ofvarious methods despite a quick packet processing speed, due to nointervention or minimum intervention of the hypervisor 305. The at leastone OS included in the virtual server 301 may perform commands relatedto various virtual switching, such as switching, editing, and tagging,but since intervention of the hypervisor 305 is required whileprocessing a packet, a packet processing speed of the at least one OSmay be slower than that of the network interface apparatus 307.

Accordingly, according to an exemplary embodiment, the virtual server301 provides a method of improving speed and flexibility by receivingthe packet control information including the at least one command andclassifying a command performable by the network interface apparatus 307such that virtual switching performable by the network interfaceapparatus 307 is quickly performed and commands that are not performableby the network interface apparatus 307 are performed by the at least oneOS.

According to an exemplary embodiment, the hypervisor 305 in the virtualserver 301 may determine a command performable by the network interfaceapparatus 307 from among at least one command received from an externalapparatus, such as a network control apparatus. In other words, thehypervisor 305 may determine whether the performable command is includedin the at least one command received from the external apparatusaccording to a capability provided by the network interface apparatus307. Also, the hypervisor 305 determines commands performable by the atleast one OS.

According to an exemplary embodiment, the at least one OS may performthe at least one command received from the external apparatus, but thehypervisor 305 determines a command performable by the software switchunit as a second command that is different from a first command.

In other words, according to an exemplary embodiment, the at least onecommand received from the external apparatus may each be classified intothe first command and the second command, wherein the first command maybe a command performable by the network interface apparatus 307 and thesecond command may be a command obtained by excluding the first commandfrom the at least one command received from the external apparatus.

According to an exemplary embodiment, the virtual server 301 may processpackets received from a client apparatus based on the first and secondcommands, by using at least one of the network interface apparatus 307and the at least one OS.

According to an exemplary embodiment, the performing of the virtualswitching by the virtual server 301 based on the first and secondcommands by using at least one of the network interface apparatus 307and the at least one OS may mean that the hypervisor 305 in the virtualserver 301 controls the network interface apparatus 307 or the at leastone OS to perform virtual switching.

According to an exemplary embodiment, if the at least one commandreceived from the external apparatus includes the command performable bythe network interface apparatus 307, the hypervisor 305 may control thenetwork interface apparatus 307 to perform the command performable bythe network interface apparatus 307 and control the at least one OS toperform a command that is not performable by the network interfaceapparatus 307.

Also, according to an exemplary embodiment, if the at least one commandreceived from the external apparatus does not include the commandperformable by the network interface apparatus 307, the hypervisor 305may control the at least one OS to perform the at least one commandreceived from the external apparatus.

According to an exemplary embodiment, the controlling performed by thehypervisor 305 may mean that the hypervisor 305 transmits a command orcommand setting information to the network interface apparatus 307 andthe at least one OS, and the network interface apparatus 307 and the atleast one OS perform virtual switching based on the command or thecommand setting information received from the hypervisor 305.

According to an exemplary embodiment, the network interface apparatus307 may receive a packet from a client apparatus. Also, according to anexemplary embodiment, the virtual server 301 may generate a packet. Inother words, the at least one OS in the virtual server 301 and anapplication driven by the OS may generate a packet.

According to an exemplary embodiment, the network interface apparatus307 and the at least one OS in the virtual server 301 may process apacket to be transmitted to the client apparatus from the virtual server301, based on the first and second commands.

Also, according to an exemplary embodiment, the hypervisor 305 mayreceive capability information about the capability of the networkinterface apparatus 307, and determine whether the at least one commandreceived from the external apparatus includes the command performable bythe network interface apparatus 307 based on the received capabilityinformation.

Also, according to an exemplary embodiment, the hypervisor 305 mayconvert the command performable by the network interface apparatus 307to a command format compatible with the network interface apparatus 307.

For example, since the at least one command in the packet controlinformation received from the network control apparatus may have acommand format different from that used in the hardware switch unit ofthe network interface apparatus 307, the hypervisor 305 may convert thecommand performable by the network interface apparatus 307 to a formatcompatible with the network interface apparatus 307, and the networkinterface apparatus 307 may perform the command having the convertedformat.

Also, according to an exemplary embodiment, the hypervisor 305 mayinclude a software switch, and the software switch of the hypervisor 305may receive the at least one command from the external apparatus.

In addition, according to an exemplary embodiment, the hypervisor 305may convert the capability information received from the networkinterface apparatus 307 and the at least one command received from theexternal apparatus respectively to a format of a capability informationmatrix and a format of a capability vector, and then determine thecommand performable by the network interface apparatus 307 from amongthe at least one command received from the external apparatus based onthe converted capability information and the converted at least onecommand.

According to an exemplary embodiment, the network interface apparatus307 may include an input/output (IO) acceleration apparatus.Alternatively, according to an exemplary embodiment, the hardware switchunit in the network interface apparatus 307 may be an IO accelerationapparatus.

FIG. 4 is a flowchart of a method of controlling virtual switching,according to an exemplary embodiment.

According to an exemplary embodiment, a hardware switch unit may be acomponent included in a network interface apparatus or may be thenetwork interface apparatus itself. Alternatively, the network interfaceapparatus may perform functions and operations of the hardware switchunit. Also, a software switch unit is a component included in at leastone OS, and the at least one OS may perform functions and operations ofthe software switch unit.

In operation 401, a server apparatus may receive at least one commandfrom an external apparatus. According to an exemplary embodiment, theexternal apparatus may be the network control apparatus 201 of FIG. 2,and the at least one command may be included in packet controlinformation. In other words, the server apparatus may obtain the packetcontrol information from the network control apparatus 201.

In operation 403, the server apparatus may determine whether the atleast one command is performable by a network interface apparatus forcontrolling virtual switching.

In other words, according to an exemplary embodiment, the serverapparatus may determine a first command that is performable by thenetwork interface apparatus from among the at least one command receivedfrom the external apparatus. According to an exemplary embodiment, ahypervisor in a virtual server may determine a command performable by ahardware switch unit of the network interface apparatus.

According to an exemplary embodiment, the server apparatus may receivethe packet control information and may determine the first commandperformable by the hardware switch unit of the network interfaceapparatus, from among the at least one command included in the packetcontrol information.

According to an exemplary embodiment, the command performable by thenetwork interface apparatus may include a command performable accordingto capabilities supported by the network interface apparatus.

For example, when the network interface apparatus provides switching andtagging capabilities, and the packet control information includescommands related to switching, tagging, and editing, the hypervisor ofthe server apparatus may determine that the commands related toswitching and tagging are commands performable by the network interfaceapparatus and the command related to editing is a command that is notperformable by the network interface apparatus.

Also, according to an exemplary embodiment, the server apparatus maydetermine a second command performable by the at least one OS from theat least one command received from the external apparatus. According toanother exemplary embodiment, the server apparatus may determine asecond command performable by the at least one OS but that is notperformable by the network interface apparatus, from the at least onecommand received from the external apparatus.

According to an exemplary embodiment, the second command may be acommand obtained by excluding the first command from the at least onecommand received from the external apparatus. Also, according to anexemplary embodiment, if the at least one command received from theexternal apparatus does not include a command performable by the networkinterface apparatus, the server apparatus may determine that the atleast one command received from the external apparatus is the secondcommand.

In operation 405, the server apparatus may control the network interfaceapparatus or the at least one OS for driving an application to performvirtual switching.

According to an exemplary embodiment, the server apparatus may controlat least one of the network interface apparatus and the at least one OSto perform virtual switching based on a result of determining inoperation 403.

According to an exemplary embodiment, the hypervisor in the serverapparatus may control the hardware switch unit of the network interfaceapparatus to perform virtual switching based on the first command andcontrol the software switch unit of the at least one OS to performvirtual switching based on the second command.

In other words, the hypervisor in the server apparatus provides at leastone of the first and second commands or command setting information tothe network interface apparatus and the at least one OS so that thenetwork interface apparatus and the at least one OS respectively performthe first command and the second command.

According to an exemplary embodiment, the server apparatus may receive apacket from a client apparatus. The server apparatus may process thereceived packet based on the first and second commands, by using atleast one of the network interface apparatus and the at least one OS.

In addition, according to an exemplary embodiment, if the at least onecommand received from the external apparatus does not include a commandperformable by the network interface apparatus, the at least one OS mayprocess the received packet based on the at least one command receivedfrom the external apparatus.

According to an exemplary embodiment, the hardware switch unit of thenetwork interface apparatus in the server apparatus may receive a packetfrom an external device. Also, the server apparatus may determinewhether the hardware switch unit is set to process a packet transmittedor received according to the first command.

According to an exemplary embodiment, the network interface apparatusprocesses a packet received based on the first command and transmits theprocessed packet to the at least one OS. Then, the at least one OS mayprocess the received packet based on the second command.

According to an exemplary embodiment, if the at least one commandreceived from the external apparatus does not include a commandperformable by the network interface apparatus, the network interfaceapparatus may transmit a received packet to the hypervisor. Then, thehypervisor may transmit the packet to the at least one OS, and the atleast one OS may process the received packet based on the at least onecommand received from the external apparatus.

According to an exemplary embodiment, the server apparatus may process apacket transmitted to the client apparatus based on at least one of thefirst and second commands, by using at least one of the networkinterface apparatus and the at least one OS.

According to an exemplary embodiment, the server apparatus may receivethe packet control information including the at least one command from anetwork managing apparatus, and divide the received packet controlinformation into the at least one command.

Also, according to an exemplary embodiment, the command performable bythe network interface apparatus from among the at least one commandreceived from the external apparatus may be converted to a commandformat compatible with the network interface apparatus. For example, thehypervisor in the server apparatus may receive a command for controllingvirtual switching, but the network interface apparatus may use a singleroot IO virtualization (SR-IOV) method like an IO accelerationapparatus, and thus may be unable to use the command as it is.Accordingly, the hypervisor in the server apparatus may convert thecommand to a command format compatible with the network interfaceapparatus.

According to an exemplary embodiment, the hypervisor in the serverapparatus may receive capability information about the capability of thenetwork interface apparatus and select a command performable by thenetwork interface apparatus from among the at least one command receivedfrom the external apparatus based on the capability information.

Also, according to an exemplary embodiment, the hypervisor in the serverapparatus may convert the at least one command and the capabilityinformation respectively to a format of a capability information matrixand a format of a capability vector, and determine the first commandthat is performable by the network interface apparatus based on theconverted at least one command and the converted capability information,as will be described in detail later with reference to FIGS. 12 and 13.

In addition, according to an exemplary embodiment, the server apparatusmay request the external apparatus for the at least one command, and theserver apparatus may not request for the at least one command if thenumber of times the at least one command is requested is equal to orhigher than a certain number of times.

FIG. 5 is a block diagram of a server apparatus 500 according to anexemplary embodiment.

According to an exemplary embodiment, the server apparatus 500 may bethe first server apparatus 101 of FIG. 1 or 2.

According to an exemplary embodiment, the server apparatus 500 mayinclude, for example, at least one OS, i.e., OSs 501 a through 501 c, ahypervisor 505, and a network interface apparatus 511. According to anexemplary embodiment, the hypervisor 505 may be the hypervisor 305 ofFIG. 3, and the network interface apparatus 511 may be the networkinterface apparatus 307 of FIG. 3.

According to an exemplary embodiment, the OSs 501 a through 501 c mayrespectively correspond to virtual machines. Also, the OSs 501 a through501 c may drive an application. According to an exemplary embodiment,the OSs 501 a through 501 c may each operate as one virtual server.

According to an exemplary embodiment, the OSs 501 a through 501 c mayprocess a packet received from the network interface apparatus 511 orthe hypervisor 505. According to an exemplary embodiment, a softwareswitch unit included in each of the OSs 501 a through 501 c may processthe packet.

According to an exemplary embodiment, the hypervisor 505 may obtain atleast one command from an external apparatus. According to an exemplaryembodiment, the external apparatus may be a network control apparatus.Alternatively, the hypervisor 505 may obtain the at least one commandbased on a user input.

According to an exemplary embodiment, an information obtainer of thehypervisor 505 may obtain the at least one command from the externalapparatus, wherein the information obtainer may be included in asoftware switch unit included in the hypervisor 505, which is differentfrom software switch units included in the OSs 501 a through 501 c.

According to an exemplary embodiment, the software switch units includedin the OSs 501 a through 501 c may receive the at least one command fromthe external apparatus.

According to an exemplary embodiment, the hypervisor 505 may determine afirst command performable by the network interface apparatus 511 and asecond command performable by the OSs 501 a through 501 c, from amongthe at least one command received from the external apparatus.

According to an exemplary embodiment, the second command may be acommand obtained by excluding the first command from the at least onecommand received from the external apparatus. In other words, thehypervisor 505 may determine the first command from among the at leastone command received from the external apparatus, and consider thatother commands, except for the first command, are second commandsperformable by the OSs 501 a through 501 c.

According to an exemplary embodiment, the server apparatus 500 mayprocess a packet received from an external device, based on the firstand second commands by using at least one of the network interfaceapparatus 511 and the OSs 501 a through 501 c.

According to an exemplary embodiment, the hypervisor 505 may set thenetwork interface apparatus 511 and the OSs 501 a through 501 c toprocess the first and second commands.

In addition, according to an exemplary embodiment, a command analyzer ofthe hypervisor 505 may determine a command performable by a hardwareswitch unit of the network interface apparatus 511 from among the atleast one command received from the external apparatus.

According to an exemplary embodiment, the hypervisor 505 or the networkinterface apparatus 511 may determine whether the hardware switch unitof the network interface apparatus 511 is set to process a packetaccording to the first command.

According to an exemplary embodiment, if the at least one commandreceived from the external apparatus does not include a commandperformable by the network interface apparatus 511, the OSs 501 athrough 501 c may process a packet based on the at least one commandreceived from the external apparatus.

For example, if the at least one command received from the externalapparatus includes a tagging command for adding a certain header and anediting command for editing a certain header of a received packet, andthe network interface apparatus 511 provides a tagging capability or anediting capability, the tagging command and/or the editing command maybe processed by the network interface apparatus 511. However, if thenetwork interface apparatus 511 does not provide both the tagging andediting capabilities, the network interface apparatus 511 is unable toperform the at least one command received from the external apparatusand thus the OSs 501 a through 501 c may process the tagging and editingcommands.

According to an exemplary embodiment, when the network interfaceapparatus 511 is set to process a packet based on the first command, thenetwork interface apparatus 511 may process the packet based on thefirst command and transmit the processed packet to the OSs 501 a through501 c, and the OSs 501 a through 501 c may process the received packetbased on the second command.

According to an exemplary embodiment, if the at least one commandreceived from the external apparatus does not include a commandperformable by the network interface apparatus 511, the networkinterface apparatus 511 may receive a packet and transmit the receivedpacket to the hypervisor 505, and the hypervisor 505 may transmit thereceived packet to the OSs 501 a through 501 c. The OSs 501 a through501 c may process the packet received from the hypervisor 505 based onthe at least one command received from the external apparatus.

According to an exemplary embodiment, the hypervisor 505 may include asoftware switch unit separately from the OSs 501 a through 501 c,wherein the software switch unit includes the information obtainer andthe command analyzer. According to an exemplary embodiment, the softwareswitch unit included in the hypervisor 505 may transmit the packetreceived from the network interface apparatus 511 to the OSs 501 athrough 501 c.

According to an exemplary embodiment, the OSs 501 a through 501 c andapplications driven by the OSs 501 a through 501 c may generate apacket, and when the packet is transmitted to a client apparatus, theserver apparatus 500 may use the network interface apparatus 511 and theOSs 501 a through 501 c to process the generated packet based on thefirst and second commands. Since such an operation corresponds toreceiving a packet, details thereof need not be provided.

According to an exemplary embodiment, the hypervisor 505 may obtainpacket control information including the at least one command and dividethe packet control information into the at least one command. Also, thehypervisor 505 may convert the first command from among the at least onecommand received from the external apparatus to a format compatible withthe network interface apparatus 511.

In addition, according to an exemplary embodiment, the hypervisor 505may receive capability information about the capability of the networkinterface apparatus 511, from the network interface apparatus 511. Thehypervisor 505 may determine a command performable by the networkinterface apparatus 511 from among the at least one command include inthe packet control information based on the received capabilityinformation.

According to an exemplary embodiment, the hypervisor 505 may convert theat least one command received from the external apparatus and thecapability information respectively to a format of a capabilityinformation matrix and a format of a capability vector, as will bedescribed in detail later with reference to FIGS. 11 and 12.

According to an exemplary embodiment, the at least one command receivedfrom the external apparatus may be in any one of various categoriesrelated to virtual switching, such as switching, tagging, untagging,editing, and filtering, as described above with reference to FIGS. 1through 4.

In addition, according to an exemplary embodiment, the hypervisor 505may request the external apparatus for the at least one command. If thenumber of times the at least one command is requested is equal to orhigher than a certain number of times, the hypervisor 505 may notrequest the external apparatus for the at least one command.

According to an exemplary embodiment, the network interface apparatus511 may be an IO acceleration apparatus.

According to an exemplary embodiment, the server apparatus 500 mayinclude a control unit (not shown). Generally, the control unit maycontrol overall operations of the server apparatus 500. In other words,the control unit may include an operation unit, such as a CPU, and maybe included in another component, but is not limited thereto.

FIG. 6 is a flowchart of a method of processing a received packet,according to an exemplary embodiment.

In operation 601, a server apparatus may obtain packet controlinformation including at least one command from an external apparatus.According to an exemplary embodiment, the external apparatus may be anetwork control apparatus and the at least one command may be related tovirtual switching.

According to an exemplary embodiment, a hypervisor in the serverapparatus may obtain the packet control operation. Operation 601corresponds to operation 401 of FIG. 4.

In operation 603, the server apparatus may determine a first commandperformable by a network interface apparatus from among the at least onecommand included in the packet control information. According to anexemplary embodiment, the hypervisor in the server apparatus maydetermine the first command performable by the network interfaceapparatus in the server apparatus.

According to an exemplary embodiment, the server apparatus may determineremaining commands obtained by excluding the first command from the atleast one command included in the packet control information as secondcommands performable by at least one OS.

In operation 605, the server apparatus may receive a packet.

According to an exemplary embodiment, the server apparatus may receivethe packet from the network interface apparatus.

In addition, according to an exemplary embodiment, operations 601 and603 may be performed after operation 605. For example, the serverapparatus may receive the packet, obtain the packet control information,and then determine the first command from the at least one commandincluded in the packet control information.

In operation 607, the network interface apparatus of the serverapparatus may process the received packet based on the first commanddetermined in operation 603.

In addition, according to an exemplary embodiment, the hypervisor of theserver apparatus may provide command setting information about the firstcommand to the network interface apparatus such that the first commandis performed. The network interface apparatus may process the receivedpacket based on the command setting information.

In operation 609, the at least one OS of the server apparatus mayprocess the packet based on the second command obtained by excluding thefirst command from the at least one command included in the packetcontrol information.

According to an exemplary embodiment, the network interface apparatus inthe server apparatus processes the packet based on the first command andtransmits the processed packet to the at least one OS, and the at leastone OS may process the packet received from the network interfaceapparatus based on the second command.

As described above with reference to FIGS. 4 and 5, if the at least onecommand included in the packet control information does not include thefirst command performable by the network interface apparatus, the atleast one OS may process the packet based on the packet controlinformation.

According to an exemplary embodiment, the processing of the packet maymean that the packet is transmitted to a destination, data included inthe packet is edited or deleted, or data is added to the packet.

FIG. 7 is a detailed flowchart of a method of performing virtualswitching, according to an exemplary embodiment.

In operation 701, a server apparatus may receive at least one command.The at least one command may be received from an external apparatus andmay include a command related to virtual switching, as described abovewith reference to FIGS. 1 through 6.

In addition, according to an exemplary embodiment, the server apparatusmay receive packet control information including the at least onecommand and may divide the packet control information into the at leastone command.

For example, the packet control information may include aswitching-related command for transmitting a packet to a destinationbased on destination information included in a packet, and atagging-related command for inserting a generic routing encapsulation(GRE) header after an internet protocol (IP) header in a packet. Theserver apparatus may obtain the packet control information and dividethe packet control information into the switching-related command andthe tagging-related command.

In operation 703, the server apparatus may determine whether each of theat least one command received in operation 701 is performable by anetwork interface apparatus.

According to an exemplary embodiment, the server apparatus may determinewhether each command is performable by a hardware switch unit in thenetwork interface apparatus based on capabilities supported by thehardware switch unit.

In operation 705, at least one OS may process the packet based on the atleast one command, based on a result of the determining in operation703. In other words, if the at least one command does not include acommand performable by the network interface apparatus, the serverapparatus may control the at least one OS to perform the at least onecommand.

In operation 707, the server apparatus may convert a first commandperformable by the network interface apparatus to a command formatcompatible with the network interface apparatus, based on the result ofdetermining in operation 703. In other words, otherwise, if the at leastone command includes the first command, the server apparatus may convertthe first command to the command format compatible with the networkinterface apparatus.

For example, the server apparatus may change a command format includedin the packet control information to the same format as tableinformation included in the network interface apparatus.

According to an exemplary embodiment, a hypervisor in the serverapparatus may set the network interface apparatus to perform theconverted first command. Also, the hypervisor in the server apparatusmay provide first command setting information for the network interfaceapparatus to perform the first command.

In operation 709, the server apparatus may process the packet based onthe first command converted in operation 707, by using the networkinterface apparatus.

In operation 711, the server apparatus may process the packet based on asecond command obtained by excluding the first command from the at leastone command, by using the at least one OS.

In addition, according to an exemplary embodiment, the server apparatusmay transmit the packet processed in operation 709 to the at least oneOS such that a packet process based on the first command using thenetwork interface apparatus and a packet process based on the secondcommand by using the at least one OS are sequentially performed.

FIG. 8 is a detailed flowchart of a method of processing a receivedpacket, according to another exemplary embodiment.

In operation 801, a server apparatus receives a packet. According to anexemplary embodiment, a network interface apparatus in the serverapparatus may receive the packet. Operation 801 may correspond tooperation 605 of FIG. 6.

In operation 803, the server apparatus may determine whether a firstcommand performable by the network interface apparatus is included in atleast one command received from an external apparatus. In addition,according to an exemplary embodiment, the server apparatus may determinewhether the network interface apparatus is set to process the firstcommand.

According to an exemplary embodiment, in operations 801 and 803, theserver apparatus may obtain the at least one command from the externalapparatus and determine whether the first command performable by thenetwork interface apparatus is included in the obtained at least onecommand as described above with reference to FIG. 4 or 6. Based on aresult of the determining, the method may further include setting, byusing the server apparatus, the network interface apparatus to performthe first command.

In operation 805, the network interface apparatus in the serverapparatus may transmit the received packet to a hypervisor based on theresult of the determining in operation 803. In other words, if the atleast one command received from the external apparatus does not includea command performable by the network interface apparatus, the serverapparatus may control the network interface apparatus to transmit thepacket to the hypervisor.

In detail, the server apparatus may control the network interfaceapparatus to receive the packet without processing the packet based onthe at least one command received from the external apparatus and totransmit the packet to the hypervisor.

In operation 807, the server apparatus may control the hypervisor totransmit the packet to at least one OS.

In operation 809, the server apparatus may control the at least one OSto process the packet received from the hypervisor, based on the atleast one command received from the external apparatus.

In operation 811, otherwise, if the at least one command received fromthe external apparatus includes a command performable by the networkinterface apparatus, the server apparatus may control the networkinterface apparatus to process the packet based on the first command. Inother words, the server apparatus may process the packet by using thenetwork interface apparatus.

In operation 813, the server apparatus may control the network interfaceapparatus to transmit the processed packet to a software switch unit inthe at least one OS.

In operation 815, the server apparatus may control the at least one OSto process the packet received from the network interface apparatus,based on a second command. According to an exemplary embodiment, thesecond command may be a command obtained by excluding the first commandfrom the at least one command received from the external apparatus.

In other words, according to an exemplary embodiment, if a hardwareswitch unit of the network interface apparatus is capable of performingthe at least one command received from the external apparatus, thepacket is processed based on the first command, and then the softwareswitch unit of the at least one OS may process the packet based on acommand that is not performable by the network interface apparatus,i.e., the second command.

FIG. 9 is a detailed flowchart of a method of processing a packet beingtransmitted, according to an exemplary embodiment.

In operation 901, a server apparatus may generate a packet. According toan exemplary embodiment, at least one OS in the server apparatus or anapplication driven by the at least one OS may generate the packet.

In operation 903, the server apparatus may determine whether at leastone command received from an external apparatus includes a first commandperformable by a network interface apparatus. In addition, according toan exemplary embodiment, the server apparatus may determine whether thenetwork interface apparatus is set to perform the first command.

According to an exemplary embodiment, since the server may determine acapability supported by the network interface apparatus based oncapability information of the network interface apparatus, the serverapparatus may determine whether to process the packet according tooperations 905 and 907 or according to operations 909 through 913without having to determine whether the network interface apparatus isset to perform the first command.

According to an exemplary embodiment, in operations 901 and 903, theserver apparatus may receive the at least one command from the externalapparatus and determine whether the first command is included in the atleast one command, as described above with reference to FIG. 4 or 6.Based on a result of the determining, the server apparatus may furtherset the network interface apparatus to perform the first command.

If the at least one command received from the external apparatus doesnot include the first command, the server apparatus may control at leastone OS to process the packet generated in operation 901, in operation905. In other words, the server apparatus may control a software switchunit included in the at least one OS to process the packet.

In operation 907, the server apparatus may transmit the packet.According to an exemplary embodiment, the server apparatus may controlthe at least one OS and the network interface apparatus such that thepacket processed by the at least one OS is transmitted to the networkinterface apparatus, and the network interface apparatus transmits theprocessed packet from the at least one OS to a client apparatus. Here,the server apparatus may control the at least one OS, a hypervisor, andthe network interface apparatus such that the at least one OS transmitsthe packet to the network interface apparatus through the hypervisor.

In operation 909, otherwise, if the at least one command received fromthe external apparatus includes the first command performable by thenetwork interface apparatus, the server apparatus may control a softwareswitch unit in the at least one OS to process the packet based on asecond command obtained by excluding the first command from the at leastone command received from the external apparatus.

In operation 911, the server apparatus may control the at least one OSand/or the hypervisor such that the packet processed by the at least oneOS is transmitted to the network interface apparatus.

In operation 913, the server apparatus may control the network interfaceapparatus to process the packet received from the at least one OS, basedon the first command. In other words, according to an exemplaryembodiment, the server apparatus may control a hardware switch unit ofthe network interface apparatus to process the packet received from theat least one OS, based on the first command.

FIG. 10 is a detailed block diagram of a server apparatus 1000 thatperforms virtual switching, according to an exemplary embodiment.

According to an exemplary embodiment, the server apparatus 1000 may bethe first server apparatus 101 of FIG. 1, the virtual server 301 of FIG.3, or the server apparatus 500 of FIG. 5.

According to an exemplary embodiment, the server apparatus 1000 mayinclude at least one OS, i.e., OSs 1001 a through 1001 c, a hypervisor1003, and a network interface apparatus 1019. According to an exemplaryembodiment, the OSs 1001 a through 1001 c may be the OSs 501 a through501 c of FIG. 5, the hypervisor 1003 may be the hypervisor 505 of FIG.5, and the network interface apparatus 1019 may be the network interfaceapparatus 511 of FIG. 5.

According to an exemplary embodiment, the OSs 1001 a through 1001 c mayrespectively include software switch units 1002 a through 1002 c.

According to an exemplary embodiment, the hypervisor 1003 may include,for example, an information obtainer 1005, a capability informationobtainer 1007, a command analyzer 1009, a command requester 1011, apacket transmitter 1013, a command converter 1015, and an informationconverter 1017.

According to an exemplary embodiment, the information obtainer 1005 mayreceive at least one command from an external apparatus. Alternatively,the information obtainer 1005 may receive packet control informationincluding at least one command from an external apparatus, such as anetwork control apparatus.

According to an exemplary embodiment, the information obtainer 1005 mayinclude an information divider 1006. According to an exemplaryembodiment, the information divider 1006 may receive the packet controlinformation including the at least one command from the externalapparatus and divide the received packet control information into the atleast one command.

According to an exemplary embodiment, the command analyzer 1009 analyzesthe at least one command received from the external apparatus or dividedby the information divider 1006 and determines whether a first commandperformable by the network interface apparatus is included.

According to an exemplary embodiment, the capability informationobtainer 1007 may obtain capability information about capabilities ofthe network interface apparatus 1019 or a hardware switch unit 1025 ofthe network interface apparatus 1019. Also, the capability informationobtainer 1007 may store the obtained capability information.

According to an exemplary embodiment, the capability information mayinclude information about a virtual switching capability supported bythe network interface apparatus 1019, such as a switching capability ora tagging capability. In addition, the capability information mayinclude information about bit strings of a packet received by thenetwork interface apparatus 1019, which are checked before transmittingthe packet to a destination.

According to an exemplary embodiment, the command requester 1011 mayrequest the external apparatus for the at least one command.Alternatively, the command requester 1011 may request for packet controlinformation. According to an exemplary embodiment, the network controlapparatus may include an SDN controller.

In addition, according to an exemplary embodiment, the command requester1011 may not request the external apparatus for a command if the numberof times a command is requested from the external apparatus is equal toor higher than a certain number of times.

According to an exemplary embodiment, the packet transmitter 1013 mayreceive the packet from the network interface apparatus 1019 andtransmit the received packet to the OSs 1001 a through 1001 c. Accordingto an exemplary embodiment, the packet transmitter 1013 may be asoftware switch unit that is different from the software switch units1002 a through 1002 c respectively included in the OSs 1001 a through1001 c.

In addition, the packet transmitter 1013 may obtain the packet controlinformation from the network control apparatus, or the OSs 1001 athrough 1001 c corresponding to virtual machines included in the serverapparatus 1000 may receive the packet control information from thenetwork control apparatus.

According to an exemplary embodiment, the command converter 1015 mayconvert the first command performable by the network interface apparatus1019, which is determined by the command analyzer 1009 from among the atleast one command obtained by the information obtainer 1005, to acommand format compatible with the network interface apparatus 1019.

According to an exemplary embodiment, the information converter 1017 mayconvert the capability information obtained by the capabilityinformation obtainer 1007 and the at least one command obtained by theinformation obtainer 1005 respectively to a format of a capabilityinformation matrix and a format of a capability vector. In other words,according to an exemplary embodiment, the command analyzer 1009 mayquickly determine the first command performable by the network interfaceapparatus 1019 based on the at least one command and the capabilityinformation converted by the information converter 1017.

According to an exemplary embodiment, the network interface apparatus1019 may include a packet transmitter 1021, a packet receiver 1023, andthe hardware switch unit 1025.

According to an exemplary embodiment, the packet transmitter 1021 maytransmit a packet generated by the server apparatus 1000. According toan exemplary embodiment, applications driven by the OSs 1001 a through1001 c may transmit the generated packet to an external device.

According to an exemplary embodiment, the packet receiver 1023 mayreceive a packet from a client apparatus.

According to an exemplary embodiment, the hardware switch unit 1025 mayprocess the transmitted or received packet based on settings of thehypervisor 1003.

According to an exemplary embodiment, the network interface apparatus1019 may include an IO acceleration card.

According to an exemplary embodiment, it may be determined whether thenetwork interface apparatus 1019 is set to process the packet based onthe first command determined by the command analyzer 1009. In otherwords, according to an exemplary embodiment, the server apparatus 1000may determine whether the network interface apparatus 1019 is set toprocess a packet based on the first command, when the packet istransmitted or received.

According to an exemplary embodiment, the server apparatus 1000 mayinclude a control unit (not shown). Generally, the control unit maycontrol overall operations of the server apparatus 1000. In other words,the control unit may include an operation unit, such as a CPU, or may beincluded in another component, but is not limited thereto.

FIG. 11 is a diagram for describing capability information according toan exemplary embodiment.

A network interface apparatus included in a server apparatus may providedifferent capabilities to control a packet, based on a manufacturer, amodel, and a version. Thus, the first server apparatus 101 of FIG. 1 or2, the virtual server 301 of FIG. 3, the server apparatus 500 of FIG. 5,or the server apparatus 1000 of FIG. 10 may obtain the capabilityinformation provided by a network interface apparatus and determinewhether the network interface apparatus is capable of performing atleast one command received from an external apparatus based on thecapability information.

According to an exemplary embodiment, information about the capabilityof the network interface apparatus is referred to as the capabilityinformation. According to an exemplary embodiment, the capabilityinformation may denote information about capabilities related to virtualswitching.

According to an exemplary embodiment, the server apparatus may convertthe capability information to a format of a capability informationmatrix 1100. The capability information matrix 1100 may have a formatshown in FIG. 11.

Referring to FIG. 11, a left column 1103 of the capability informationmatrix 1100 may indicate virtual switching capabilities provided by thenetwork interface apparatus. In other words, the left column 1103 mayindicate various categories of virtual switching capabilities, such asswitching, tagging, editing, and filtering.

A right column 1101 of the capability information matrix 1100 of FIG. 11may indicate an offset of a packet. Here, an offset of a packet denotesa bit string of the packet and indicates which bit (or byte) of thepacket is checked during switching, to which bit a header is insertable,and which bit is editable. In other words, shaded regions in FIG. 11indicate bits of a bit string of the packet, which may be checked oredited or to which a bit may be added, by using capabilities provided bythe network interface apparatus.

According to the capability information matrix 1100 of FIG. 11, thenetwork interface apparatus may check the first bit to 12^(th) bit fromthe bit string of the packet to check a destination of the packet andprovide a switching capability, may provide a tagging capability foradding a new header to the 13^(th) to 17^(th) bits, and may provide anediting capability for editing the 6^(th) to 12^(th) bits.

In addition, according to an exemplary embodiment, the server apparatusmay store the capability information matrix 1100 obtained by convertingthe capability information.

According to an exemplary embodiment, the capability information matrix1100 of FIG. 11 is only an example for storing and converting thecapability information, and thus the capability information may beconverted to and stored in any one of a variety of table formats or amatrix format different from that of FIG. 11, and is not limitedthereto.

FIG. 12 is a diagram for describing packet control information accordingto an exemplary embodiment.

As described above with reference to FIGS. 1 through 10, the packetcontrol information may include at least one command related to packetcontrol. In other words, a server apparatus may receive the at least onecommand from an external apparatus, or may receive the packet controlinformation including the at least one command.

According to an exemplary embodiment, the server apparatus may receivethe at least one command from the external apparatus, such as a networkcontrol apparatus, and convert the at least one command to a format ofcapability vectors 1200. The capability vectors 1200 may have a formatshown in FIG. 12.

In FIG. 12, a first command and a second command included in the packetcontrol information are converted to the capability vectors 1200.

A right column 1201 of the capability vectors 1200 of FIG. 12 mayindicate an offset of a packet like the right column 1101 of FIG. 11.

Referring to FIG. 12, the first command indicated by a first capabilityvector 1203 is a command related to editing and is a command for editingthe first to 6^(th) bits in a bit string of the packet. The firstcapability vector 1203 of FIG. 12 is obtained by converting the firstcommand to a capability vector.

The second command indicated by a second capability vector 1205 is acommand for switching the packet by checking the 6^(th) to 12^(th) bitsof the bit string of the packet. The second capability vector 1205 ofFIG. 12 is obtained by converting the second command to a capabilityvector. In other words, a shaded region of the first capability vector1203 indicates bits of the bit string of the packet, which are checkedor edited or to which a bit is added, for a packet process, after theserver apparatus analyzes the first command.

According to an exemplary embodiment, the server apparatus may comparethe capability information matrix 1100 of FIG. 11 and the capabilityvectors 1200 of FIG. 12 so as to determine the first command performableby the network interface apparatus.

In other words, referring to the first capability vector 1203 of FIG.12, the first command is a command for editing the first to 6^(th) bitsof the bit string of the packet, but referring to the capabilityinformation matrix 1100 of FIG. 11, the network interface apparatus onlyprovides a capability of editing the 6^(th) to 12^(th) bits, and thusthe first command is a command that is not performable by the networkinterface apparatus 1019 of FIG. 11.

On the other hand, referring to the second capability vector 1205 ofFIG. 12, the second command is a command for switching the packet bychecking the 6^(th) to 12^(th) bits of the bit string of the packet, andreferring to the capability information matrix 1100 of FIG. 11, thenetwork interface apparatus provides a capability of checking andswitching first to 12^(th) bits, and thus the second command is acommand that is performable by the network interface apparatus 1019 ofFIG. 11.

In other words, according to an exemplary embodiment, if a shaded regionof a capability vector is included in a shaded region of a capabilityinformation matrix, the server apparatus may determine a command to beperformable by the network interface apparatus 1019 or a hardware switchunit.

According to an exemplary embodiment, the server apparatus may store acapability vector obtained by converting packet control information.

In addition, according to an exemplary embodiment, when the serverapparatus converts at least one command received from an externalapparatus to a format of a capability vector, the server apparatus maystore, in a format different from the format of a capability vector,information to be transmitted to a certain destination according to acertain bit string and information required to change the certain bitstring to a certain value.

For example, when packet control information includes a command relatedto editing that if a 3^(rd) bit of a bit string of a packet is 0, the3^(rd) bit is changed to 1, and if the 3^(rd) bit is 1, the 3^(rd) bitis not changed, the server apparatus may convert the command to acapability vector based on a category of the command related to editingand information that the command is related to the editing of the 3^(rd)bit, and may store a condition the command is actually performed andinformation about a value to be changed separately from the capabilityvector. Also, the server apparatus may insert the separately storedinformation to command setting information and transmit the commandsetting information to a network interface apparatus or at least one OS.

According to an exemplary embodiment, the capability vectors 1200 ofFIG. 12 are only an example of storing and converting the at least onecommand received from the external apparatus, and thus the at least onecommand received from the external apparatus may be converted to andstored in any one of various table formats or a format different fromthat of FIG. 12, and is not limited thereto.

FIG. 13 is a flowchart of a method of determining whether a command isperformable by a network interface apparatus, according to an exemplaryembodiment.

In operation 1301, a server apparatus may obtain capability informationof the network interface apparatus and obtain packet control informationincluding at least one command from an external apparatus. According toan exemplary embodiment, the server apparatus may receive the packetcontrol information from the external server.

In operation 1303, the server apparatus may convert the capabilityinformation and the at least one command respectively to a format of acapability information matrix and a format of a capability vector. Theconverting to the format of the capability information matrix and theformat of the capability vector has been described above with referenceto FIGS. 11 and 12 as an example.

In operation 1305, the server apparatus determines an inclusionrelationship between the capability vector obtained by converting the atleast one command and the capability information matrix obtained byconverting the capability information. In other words, as describedabove with reference to FIG. 12, since the capability vector and thecapability information matrix are converted to the same format, theserver apparatus may quickly determine whether the at least one commandobtained from the external apparatus is performable by the networkinterface apparatus.

If it is determined that there is no capability vector included in thecapability information matrix in operation 1305, the server apparatusmay control at least one OS to perform the at least one command obtainedfrom the external apparatus in operation 1307.

Otherwise, if it is determined that at least one capability vector isincluded in the capability information matrix in operation 1305, theserver apparatus may select the capability vector included in thecapability information matrix and control the network interfaceapparatus to perform a command corresponding to the selected capabilityvector in operation 1309.

In other words, according to an exemplary embodiment, the serverapparatus may convert the capability information and the at least onecommand respectively to the format of the capability information matrixand the format of the capability vector so as to determine whether theat least one command is performable based on the capability information.

FIG. 14 is a flowchart of a method of setting a command to a networkinterface apparatus, according to an exemplary embodiment.

In operation 1401, a server apparatus may receive at least one commandfrom an external apparatus. According to an exemplary embodiment, theserver apparatus may receive packet control information including the atleast one command from the external apparatus. Operation 1401corresponds to related details described above with reference to FIGS. 1through 10.

In operation 1403, the server apparatus may analyze a category of the atleast one command received in operation 1401. In other words, the serverapparatus may analyze which command received in operation 1401 isrelated to virtual switching.

According to an exemplary embodiment, the category of the at least onecommand may include switching, editing, tagging, untagging, filtering,or rate limiting, but is not limited thereto. In other words, accordingto an exemplary embodiment, the category may denote a classificationstandard based on various virtual switching operations.

In operation 1405, the server apparatus may determine whether each ofthe at least one command is a command related to switching.

If it is determined that one of the at least one command is a commandrelated to switching in operation 1405, the server apparatus may inputthe one command to a switching table stored or set in the networkinterface apparatus in operation 1407.

Otherwise, if it is determined that there is no command related toswitching from among the at least one command in operation 1405, theserver apparatus may determine whether each of the at least one commandis a command related to tagging in operation 1409.

If it is determined that one of the at least one command is a commandrelated to tagging in operation 1409, the server apparatus may input theone command to a tagging table stored or set in the network interfaceapparatus in operation 1411.

In FIG. 14, the at least one command is classified based on twocategories, but FIG. 14 is only an example of setting the packet controlinformation to the network interface apparatus, and each command may beclassified and input based on at least one category.

FIG. 15 is a diagram for describing a flow of virtual switchingaccording to an exemplary embodiment.

Referring to FIG. 15, a block 1500 indicated by a dashed line is a flowprocessed in a server apparatus.

According to an exemplary embodiment, a hardware switch unit is acomponent included in a network interface apparatus and may correspondto the hardware switch unit 1025 of FIG. 10. Also, a software switchunit is a component included in at least one OS and may correspond toany one of the software switch units 1002 a through 1002 c of FIG. 10.

In operation 1501, a hypervisor in the server apparatus may receive atleast one command from an external apparatus, such as a network controlapparatus, as described above with reference to FIGS. 1 through 10.

In operation 1503, the hypervisor may analyze the at least one commandreceived from the external apparatus. According to an exemplaryembodiment, the hypervisor may obtain packet control informationincluding the at least one command and may determine a commandperformable by the hardware switch unit from among the at least onecommand included in the packet control information.

According to an exemplary embodiment, the hypervisor may receivecapability information about the capability of the hardware switch unitfrom the hardware switch unit and determine whether the at least onecommand included in the packet control information is performable by thehardware switch unit based on the received capability information.

In operation 1505, the hypervisor may provide command settinginformation for controlling the hardware switch unit and the softwareswitch unit to process the at least one command based on a result ofanalyzing in operation 1503.

According to an exemplary embodiment, the command setting information isinformation for controlling the hardware switch unit and the softwareswitch unit to set commands related to virtual switching and may includecategories of commands, details about commands, formats of commands, anddestination addresses.

In operation 1507, the hardware switch unit may receive a packet from aclient apparatus.

In operation 1509, the hardware switch unit may process the packetreceived from the client apparatus based on the command settinginformation received from the hypervisor in operation 1505.

According to an exemplary embodiment, if the at least one commandreceived from the external apparatus does not include a commandperformable by the hardware switch unit, the hypervisor may not providethe command setting information to the hardware switch unit.

In addition, according to an exemplary embodiment, if the hardwareswitch unit is not provided with the command setting information fromthe hypervisor, the hardware switch unit may transmit the packetreceived from the client apparatus to the hypervisor without processingthe packet.

In operation 1511, the hardware switch unit may transmit the processedpacket to the software switch unit. According to an exemplaryembodiment, the software switch unit may be included in the at least oneOS and may be a destination for the processed packet.

In operation 1513, the software switch unit may process the packetreceived from the hardware switch unit based on the command settinginformation received from the hypervisor in operation 1505.

An apparatus described herein may include a processor, a memory forstoring program data and executing it, a permanent storage such as adisk drive, a communications port for handling communication withexternal devices, and user interface devices, including a display, keys,etc. When software modules are involved, these software modules may bestored as program instructions or computer-readable codes executable onthe processor on a computer-readable media such as read-only memory(ROM), random-access memory (RAM), CD-ROMs, magnetic tapes, floppydisks, and optical data storage devices. The computer-readable recordingmedium may also be distributed over network-coupled computer systems sothat the computer-readable code is stored and executed in a distributedfashion. This media can be read by the computer, stored in the memory,and executed by the processor. Any one or more of the software modulesdescribed herein may be executed by a dedicated hardware-based computeror processor unique to that unit or by a hardware-based computer orprocessor common to one or more of the modules. The methods describedhere may be executed on a general purpose computer or processor or maybe executed on a particular machine such as the server apparatus andhypervisor described herein.

All references, including publications, patent applications, andpatents, cited herein are hereby incorporated by reference to the sameextent as if each reference were individually and specifically indicatedto be incorporated by reference and were set forth in its entiretyherein.

For the purposes of promoting an understanding of the principles of theinventive concept, reference has been made to the exemplary embodimentsillustrated in the drawings, and specific language has been used todescribe these embodiments. However, no limitation of the scope of theinventive concept is intended by this specific language, and theinventive concept should be construed to encompass all embodiments thatwould normally occur to one of ordinary skill in the art.

The exemplary embodiments may be described in terms of functional blockcomponents and various processing steps. Such functional blocks may berealized by any number of hardware and/or software components configuredto perform the specified functions. For example, the exemplaryembodiments may employ various integrated circuit components, e.g.,memory elements, processing elements, logic elements, look-up tables,and the like, which may carry out a variety of functions under thecontrol of one or more microprocessors or other control devices.Similarly, where the elements of the exemplary embodiments areimplemented using software programming or software elements theinvention may be implemented with any programming or scripting languagesuch as C, C++, Java, assembler, or the like, with the variousalgorithms being implemented with any combination of data structures,objects, processes, routines or other programming elements. Functionalaspects may be implemented in algorithms that execute on one or moreprocessors. Furthermore, the exemplary embodiments may employ any numberof general techniques for electronics configuration, signal processingand/or control, data processing, and the like. The words “mechanism” and“element” are used broadly and are not limited to mechanical or physicalembodiments, but can include software routines in conjunction withprocessors, etc.

The particular implementations shown and described herein areillustrative examples of the inventive concept and are not intended tootherwise limit the scope of the inventive concept in any way. For thesake of brevity, conventional electronics, control systems, softwaredevelopment and other functional aspects of the systems (and componentsof the individual operating components of the systems) may not bedescribed in detail. Furthermore, the connecting lines, or connectorsshown in the various figures presented are intended to representexemplary functional relationships and/or physical or logical couplingsbetween the various elements. It should be noted that many alternativeor additional functional relationships, physical connections or logicalconnections may be present in a practical device. Moreover, no item orcomponent is essential to the practice of the invention unless theelement is specifically described as “essential” or “critical”.

The use of the terms “a”, “an”, and “the” and similar referents in thecontext of describing the inventive concept (especially in the contextof the following claims) are to be construed to cover both the singularand the plural. Furthermore, recitation of ranges of values herein aremerely intended to serve as a shorthand method of referring individuallyto each separate value falling within the range, unless otherwiseindicated herein, and each separate value is incorporated into thespecification as if it were individually recited herein. Finally, thesteps of all methods described herein can be performed in any suitableorder unless otherwise indicated herein or otherwise clearlycontradicted by context. The use of any and all examples, or exemplarylanguage (e.g., “such as”) provided herein, is intended merely to betterilluminate the inventive concept and does not pose a limitation on thescope of the inventive concept unless otherwise claimed. Numerousmodifications and adaptations will be readily apparent to those ofordinary skill in this art without departing from the spirit and scopeof the inventive concept.

What is claimed is:
 1. A method of controlling virtual switching in aserver, the method comprising: receiving at least one command from anexternal apparatus; determining whether the at least one command isperformable by a network interface apparatus for controlling virtualswitching; and controlling, by the server, the network interfaceapparatus or at least one operating system for driving an application toperform virtual switching based on a result of the determining.
 2. Themethod of claim 1, wherein the at least one command received from theexternal device comprises: a first command performable by the networkinterface apparatus; and a second command performable by the at leastone operating system but not performable by the network interfaceapparatus.
 3. The method of claim 2, wherein the second command is acommand obtained by excluding the first command from the at least onecommand received from the external apparatus.
 4. The method of claim 2,wherein the controlling comprises: controlling the network interfaceapparatus to perform virtual switching based on the first command; andcontrolling the at least one operating system to perform virtualswitching based on the second command.
 5. The method of claim 1, whereinthe determining comprises converting a command determined as performableby the network interface apparatus to a command format compatible withthe network interface apparatus.
 6. The method of claim 1, wherein thedetermining comprises analyzing a category of a command performable bythe network interface apparatus, and the controlling comprises inputtingthe command to a table in the network interface apparatus, whichcorresponds to the category, based on a result of the analyzing.
 7. Themethod of claim 1, wherein the at least one command comprises a commandrelated to at least one of switching, tagging, untagging, editing,filtering, and rate limiting.
 8. The method of claim 1, wherein thecontrolling comprises, if the at least one command is determined as notcomprising a command performable by the network interface apparatus,controlling the at least one operating system to perform virtualswitching.
 9. The method of claim 1, wherein the at least one operatingsystem comprises a software switch unit, the network interface apparatuscomprises a hardware switch unit, and the controlling comprisescontrolling the software switch unit and the hardware switch unit toperform virtual switching.
 10. The method of claim 1, wherein thedetermining comprises: receiving capability information about thecapability of the network interface apparatus from the network interfaceapparatus; and determining whether the at least one command receivedfrom the external apparatus is performable by the network interfaceapparatus based on the capability information.
 11. The method of claim10, wherein the receiving of the capability information comprises:converting the capability information to a format of a capabilityinformation matrix; and converting the at least one command receivedfrom the external apparatus to a format of a capability vector, whereinthe determining based on the capability information comprisesdetermining whether the at least one command received from the externalapparatus is performable by the network interface apparatus based on theconverted capability information and the converted at least one command.12. The method of claim 1, further comprising requesting the externalapparatus for the at least one command, wherein the requesting comprisesnot requesting the external apparatus for the at least one command whena number of times the at least one command is requested is equal to orhigher than a certain number of times.
 13. The method of claim 2,wherein the controlling comprises: controlling the network interfaceapparatus to process a received packet based on the first command;controlling the network interface apparatus to transmit the processedpacket to the at least one operating system; and controlling the atleast one operating system to process the processed packet based on thesecond command.
 14. The method of claim 1, wherein the controllingcomprises: controlling a hypervisor to transmit a received packet to theat least one operating system; and controlling the at least oneoperating system to process the received packet from the hypervisorbased on the at least one command received from the external apparatus.15. The method of claim 1, wherein the controlling comprises controllingthe network interface apparatus and the at last one operating system toprocess a packet transmitted to a client apparatus based on the at leastone command received from the external apparatus.
 16. A server apparatuscomprising: at least one operating system for driving an application; anetwork interface apparatus for performing virtual switching; and ahypervisor for controlling access to the at least one operating systemand the network interface apparatus, wherein the hypervisor determineswhether at least one command received from an external apparatus isperformable by the network interface apparatus and controls the networkinterface apparatus or the at least one operating system to performvirtual switching based on a result of the determination.
 17. The serverapparatus of claim 16, wherein the at least one command received fromthe external apparatus comprises: a first command performable by thenetwork interface apparatus; and a second command performable by the atleast one operating system but not performable by the network interfaceapparatus.
 18. The server apparatus of claim 17, wherein the secondcommand is a command obtained by excluding the first command from the atleast one command received from the external apparatus.
 19. The serverapparatus of claim 17, wherein the hypervisor controls the networkinterface apparatus to perform virtual switching based on the firstcommand and controls the at least one operating system to perform thevirtual switching based on the second command.
 20. The server apparatusof claim 16, wherein the hypervisor comprises a command converter thatconverts a command performable by the network interface apparatus to acommand format compatible with the network interface apparatus, based ona result of the determination.
 21. The server apparatus of claim 16,wherein the hypervisor analyzes a category of a command performable bythe network interface apparatus and inputs the command to a table in thenetwork interface apparatus, which corresponds to the category, based ona result of the analysis.
 22. The server apparatus of claim 16, whereinthe at least one command comprises a command related to at least one ofswitching, tagging, untagging, editing, filtering, and rate limiting.23. The server apparatus of claim 16, wherein the hypervisor controlsthe at least one operating system to perform virtual switching when theat least one command does not comprise a command performable by thenetwork interface apparatus.
 24. The server apparatus of claim 16,wherein the at least one operating system comprises a software switchunit, the network interface apparatus comprises a hardware switch unit,and the hypervisor controls the software switch unit and the hardwareswitch unit to perform virtual switching.
 25. The server apparatus ofclaim 16, wherein the hypervisor comprises: a capability informationobtainer to receive capability information about the capability of thenetwork interface apparatus, from the network interface apparatus; and acommand analyzer to determine whether the at least one command receivedfrom the external apparatus is performable by the network interfaceapparatus, based on the capability information.
 26. The server apparatusof claim 25, wherein the hypervisor further comprises an informationconverter to convert the capability information to a format of acapability information matrix and the at least one command received fromthe external apparatus to a format of a capability vector, and thecommand analyzer is adapted to determine whether the at least onecommand received from the external apparatus is performable by thenetwork interface apparatus based on the converted capabilityinformation and the converted at least one command.
 27. The serverapparatus of claim 16, wherein the hypervisor comprises a commandrequester to request the external apparatus for the at least onecommand, wherein the command requester does not request the externalapparatus for the at least one command when the number of times the atleast one command is requested is equal to or higher than a certainnumber of times.
 28. The server apparatus of claim 17, wherein thenetwork interface apparatus processes a received packet based on thefirst command and transmits the processed packet to the at least oneoperating system, and the at least one operating system processes thepacket processed by the network interface apparatus based on the secondcommand.
 29. The server apparatus of claim 16, wherein the hypervisortransmits a received packet to the at least one operating system, andthe at least one operating system processes the packet received from thehypervisor based on the at least one command received from the externalapparatus.
 30. The server apparatus of claim 16, wherein the networkinterface apparatus and the at least one operating system processes apacket transmitted to a client apparatus based on the at least onecommand received from the external apparatus.
 31. A non-transitorycomputer-readable recording medium having recorded thereon a program forexecuting the method of claim
 1. 32. A server comprising: a networkinterface apparatus; and a hypervisor to determine whether a commandreceived from an external apparatus is performable by the networkinterface apparatus according to a capability of the network interfaceapparatus, wherein the hypervisor controls the network interfaceapparatus to process the command received from the external apparatusbased on a result of the determination.
 33. The server of claim 32,wherein the hypervisor controls the network interface apparatus toperform virtual switching based on the command according to thedetermination by the hypervisor.
 34. The server of claim 32, furthercomprising an operating system for driving an application, wherein ifthe hypervisor determines that the command received from the externalapparatus cannot be processed by the network interface apparatusaccording to the capability of the network interface apparatus, thehypervisor controls the operating system to instead process the command.35. The server of claim 34, wherein the hypervisor receives capabilityinformation about the capability of the network interface apparatus, anddetermines whether the command received from the external apparatus isperformable by the network interface apparatus based on the capabilityinformation received by the hypervisor.
 36. The server of claim 35,wherein the capability information comprises at least one of informationabout a virtual switching capability supported by the network interfaceapparatus and information about bit strings of a packet received by thenetwork interface apparatus, which are checked before transmitting thepacket to a destination.
 37. A hypervisor configured to be installedwithin a virtual server that includes a network interface apparatus, thehypervisor comprising: an information obtainer to receive at least onecommand from an external apparatus; a capability information obtainer toobtain capability information about capabilities of the networkinterface apparatus; a command analyzer to analyze the at least onecommand received by the information obtainer and to determine whether afirst command performable by the network interface apparatus is includedin the at least one command based on the capability information obtainedby the capability information obtainer; and a command converter toconvert the first command performable by the network interfaceapparatus, which is determined by the command analyzer from among the atleast one command obtained by the information obtainer, to a commandformat compatible with the network interface apparatus.
 38. Thehypervisor of claim 37, wherein the capability information comprises atleast one of information about a virtual switching capability supportedby the network interface apparatus and information about bit strings ofa packet received by the network interface apparatus, which are checkedbefore transmitting the packet to a destination.